BaseProtocolServer
プロトコルサーバー(FIX、SBEなど)のベースクラス。共有インフラ:ライフサイクル、セッション、サブスクリプション、メッセージチャネル、背景タスクが含まれています。
継承元: BaseLogReceiver
実装: IProtocolServer, ILogReceiver, ILogSource, IDisposable
コンストラクター
protected BaseProtocolServer(TSettings settings)
baseProtocolServer = BaseProtocolServer(settings)
新規インスタンスを初期化します。
- settings
- サーバー設定。
プロパティ
protected LoginRateLimiter LoginRateLimiter { get; private set; }
value = baseProtocolServer.LoginRateLimiter
baseProtocolServer.LoginRateLimiter = value
ログインの試みのためのレートリミッター(すべてのリスナー間で共有)。
public IEnumerable<IMessageListenerSession> Sessions { get; }
value = baseProtocolServer.Sessions
アクティブセッション。
public ChannelStates State { get; protected set; }
value = baseProtocolServer.State
baseProtocolServer.State = value
ステートストレージの根本的な状態を取得します。
メソッド
public void AddSubscription(ServerSubscription subscription)
baseProtocolServer.AddSubscription(subscription)
サブスクリプションを追加。
- subscription
- サブスクリプション。
protected virtual void ClearState()
baseProtocolServer.ClearState()
すべての状態をクリア:リスナー、セッション、サブスクリプション。
protected string Convert(string value)
result = baseProtocolServer.Convert(value)
設定されている場合は、テキストをラテンに変換します。
protected abstract TSubscription CreateSubscription(TClientSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = baseProtocolServer.CreateSubscription(session, requestId, subscription, type)
サブスクリプション情報インスタンスを作成します。
public void Disconnect(IMessageListenerSession session)
baseProtocolServer.Disconnect(session)
セッションの切断
- session
- セッション
protected override void DisposeManaged()
baseProtocolServer.DisposeManaged()
リソースのリリース
protected void EnqueueMessage(TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, requestId, handler, cancellationToken)
セッションのリクエストを ID でリクエストするメッセージ
protected void EnqueueMessage(TSubscription subscription, TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, session, requestId, handler, cancellationToken)
コア・エンキュー: クライアント・セッションでスケジュール作業を行います。
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
複数の加入者のためのメッセージ
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
複数の加入者(ボール結果付き)のメッセージ
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
単一のサブスクリプションのメッセージの入力
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
単一のサブスクリプション( bool result と)のメッセージのキューイング。
protected void EnqueueMessage(TClientSession session, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, handler, cancellationToken)
セッションのメッセージ(リクエストIDなし)
protected abstract string GetSessionKey(TClientSession session)
result = baseProtocolServer.GetSessionKey(session)
クライアントセッション(e.g@.SenderCompId)に利用されるキーを取得します。
public IEnumerable<ServerSubscription> GetSubscriptions(IMessageListenerSession session)
result = baseProtocolServer.GetSubscriptions(session)
指定したセッションのサブスクリプションを取得します。
- session
- セッション
戻り値: サブスクリプション。
public bool HasSubscriptions(DataType dataType, SecurityId securityId)
result = baseProtocolServer.HasSubscriptions(dataType, securityId)
加入者があります。
protected abstract bool IsStubSubscription(TSubscription subscription)
result = baseProtocolServer.IsStubSubscription(subscription)
サブスクリプションがスタブ(プレースホルダー)であるかどうかを確認してください。
public override void Load(SettingsStorage storage)
baseProtocolServer.Load(storage)
設定をロードします。
- storage
- 設定ストレージ。
protected abstract void OnClearListenerState()
baseProtocolServer.OnClearListenerState()
明確なプロトコル固有のリスナー状態(停止リスナーなど)。
protected abstract void OnStartListeners(CancellationToken cancellationToken)
baseProtocolServer.OnStartListeners(cancellationToken)
プロトコル固有のリスナー(TCPなど)を開始します。_backgroundTasksにタスクを追加します。
protected abstract void ProcessInMessage(Message message, CancellationToken cancellationToken)
baseProtocolServer.ProcessInMessage(message, cancellationToken)
顧客を購読するメッセージとルートを処理する。
protected virtual void ProcessLogout(TClientSession session)
baseProtocolServer.ProcessLogout(session)
クライアントのログアウト/切断を処理する。
protected void RaiseNewOutMessage(IMessageListenerSession session, Message message)
baseProtocolServer.RaiseNewOutMessage(session, message)
チャンネルにメッセージを発信する。
protected void RaiseSessionConnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionConnected(session)
レイズセッション接続イベント。
protected void RaiseSessionDisconnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionDisconnected(session)
セッションの切断イベントを上げます。
public bool RemoveSubscription(ServerSubscription subscription)
result = baseProtocolServer.RemoveSubscription(subscription)
サブスクリプションを削除します。
- subscription
- サブスクリプション。
戻り値: サブスクリプションが見つからなかった場合、そうでなければ。
public bool Resume(ServerSubscription subscription)
result = baseProtocolServer.Resume(subscription)
サブスクリプションを再開します。
- subscription
- サブスクリプション。
戻り値: サブスクリプションが見つからなかった場合、そうでなければ。
public void Resume(IMessageListenerSession session)
baseProtocolServer.Resume(session)
セッションを再開します。
- session
- セッション
public IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>> RunAsync(CancellationToken cancellationToken)
result = baseProtocolServer.RunAsync(cancellationToken)
サーバをオープンし、最後に閉じる。
public override void Save(SettingsStorage storage)
baseProtocolServer.Save(storage)
設定を保存します。
- storage
- 設定ストレージ。
protected abstract void ScheduleSessionWork(TClientSession session, ServerSubscription subscription, string requestId, Func<TClientSession, string, CancellationToken, ValueTask<bool>> handler)
baseProtocolServer.ScheduleSessionWork(session, subscription, requestId, handler)
クライアントセッションのアウトゴイングキューでタスクをスケジュールします。
public virtual bool SendInMessage(Message message)
result = baseProtocolServer.SendInMessage(message)
クライアントに処理およびルーティングを行うためのサーバーに、インカムメッセージを送信する。
protected void StartServer(CancellationToken cancellationToken)
baseProtocolServer.StartServer(cancellationToken)
サーバを起動: ステートを初期化し、リスナーとバックグラウンドタスクを開始します。
protected void StopServer()
baseProtocolServer.StopServer()
サーバを停止:タスクをキャンセル、チャンネルをクリア、状態をクリアします。
public void Suspend(IMessageListenerSession session)
baseProtocolServer.Suspend(session)
セッションを中断します。
- session
- セッション
public bool Suspend(ServerSubscription subscription)
result = baseProtocolServer.Suspend(subscription)
サブスクリプションを中断します。
- subscription
- サブスクリプション。
戻り値: サブスクリプションが見つからなかった場合、そうでなければ。
イベント
public event Action<IMessageListenerSession> SessionConnected
baseProtocolServer.SessionConnected += handler
セッションコネクティッドイベント。
public event Action<IMessageListenerSession> SessionDisconnected
baseProtocolServer.SessionDisconnected += handler
セッションの切断イベント。
public event Action<ServerSubscription> SubscriptionChanged
baseProtocolServer.SubscriptionChanged += handler
クライアントサブスクリプションが変更されたイベント。
フィールド
protected readonly List<Task> _backgroundTasks
value = baseProtocolServer._backgroundTasks
背景タスク(クライアント、プロセスメッセージなど)
protected readonly SynchronizedSet<long> _cancellationRequests
value = baseProtocolServer._cancellationRequests
注文キャンセルリクエストトランザクションIDを保留する。
protected readonly SynchronizedSet<ServerSubscription> _changedSubscriptions
value = baseProtocolServer._changedSubscriptions
サブスクリプションの終了通知を変更しました。
protected readonly CachedSynchronizedDictionary<string, CachedSynchronizedList<TClientSession>> _clientSessions
value = baseProtocolServer._clientSessions
セッションキー(e.gSenderCompId@)をグループ化したクライアントセッション。
protected readonly Channel<Message> _incomingMessages
value = baseProtocolServer._incomingMessages
メッセージチャネルの受信。
protected readonly Channel<ValueTuple<IMessageListenerSession, Message>> _outgoingMessages
value = baseProtocolServer._outgoingMessages
メッセージチャンネル(セッション+メッセージペア)を外します。
protected readonly SubscriptionHolder<TSubscription, TClientSession> _subscriptions
value = baseProtocolServer._subscriptions
サブスクリプションホルダー。